Array.sortOn()

Доступность

Flash Player 6; возможности метода расширены в Flash Player 7.

Синтаксис

my_array.sortOn("fieldName":String ) : Array
my_array.sortOn("fieldName":String, option:Number | option |... ) : Array
my_array.sortOn( [ "fieldName" , "fieldName" , ... ]:Array) : Array
my_array.sortOn( [ "fieldName" , "fieldName" , ... ]:Array , option:Number | option |... ) : Array

Примечание: Где показаны скобки ([]), Вы должны вставить их в код; то есть, скобки не представляют дополнительные параметры.

Параметры

fieldName Строка, которая идентифицирует область в элементе массива для сортировки.

option Одно /или несколько/ чисел или имён определённых констант, с оператором | (побитовое ИЛИ) , изменяющие сортировку, относительно, применяемой по умолчанию. Следующие значения возможны для option :

Для дополнительной информации по каждой опции, смотрите Описание.

Возвращает

Возвращаемое значение зависит от того, какие параметры Вы передаёте :

Описание

Метод; сортирует элементы массива по одному /или более/ полям. Если Вы передаёте однотипные fieldName параметры, первое поле представляет первичную область сортировки, второе представляет следующую область, и так далее. Сортировка во Флэш производится, согласно Unicode-кодов символов. (ASCII поддерживает Unicode). Если ни один из сравниваемых элементов не содержит область, указанную в параметре fieldName , поле принимается, как undefined, и элементы помещаются, в сортируемом массиве, без упорядочивания.

По умолчанию, Array.sortOn() работает, как показано в следующем списке :

Вы можете использовать опции option , чтобы отменить, используемые по умолчанию. В следующем примере, используются различные форматы опций option . Если Вы хотите произвести сортировку простого массива (например, массив с одним полем сортировки), или Вы хотите сортировать с параметрами, которые не поддерживаются options , используйте Array.sort().

Для вставки нескольких опций в числовом формате, используйте их с оператором побитовое ИЛИ (|) или сложите значения опций. Следующий код демонстрирует три способа, задания числовой сортировки, по убыванию :

my_array.sortOn(someFieldName, 2 | 16);
my_array.sortOn(someFieldName, 18);
my_array.sortOn(someFieldName, Array.DESCENDING | Array.NUMERIC);

Кодовые подсказки (смотрите "Использование кодовых подсказок" в Использовании ActionScript во Флэш) появляются, если Вы используете строковую форму флага (например, DESCENDING), а не числовую форму (2).

Рассмотрим следующий массив :

var my_array:Array = new Array();
my_array.push({password: "Bob", age:29});
my_array.push({password: "abcd", age:3});
my_array.push({password: "barb", age:35});
my_array.push({password: "catchy", age:4});

Сортировка по умолчанию, для поля password , приводит к следующим результатам :

my_array.sortOn("password");
// Bob
// abcd
// barb
// catchy

Сортировка нечувствительная к регистру, для поля password , приводит к следующим результатам :

my_array.sortOn("password", Array.CASEINSENSITIVE);
// abcd
// barb
// Bob
// catchy

Сортировка нечувствительная к регистру, по убыванию, для поля password , приводит к следующим результатам :

my_array.sortOn("password", 1|2);
// catchy
// Bob
// barb
// abcd

Сортировка по умолчанию, для поля age , приводит к следующим результатам :

my_array.sortOn("age");
// 29
// 3
// 35
// 4

Сортировка числовая, для поля age , приводит к следующим результатам :

my_array.sortOn("age", 16);
// 3
// 4
// 29
// 35

Сортировка числовая, по убыванию, для поля age , приводит к следующим результатам :

my_array.sortOn("age", 18);
// 35
// 29
// 4
// 3

Сортировка, изменяющая элементы массива, приводит к следующим результатам :

// До сортировки
my_array[0].age = 29;
my_array[1].age = 3;
my_array[2].age = 35;
my_array[3].age = 4;
// После сортировки,без предачи значения 8 для option
my_array.sortOn("age", Array.NUMERIC);
my_array[0].age = 3;
my_array[1].age = 4;
my_array[2].age = 29;
my_array[3].age = 35;

Выполнение сортировки, которая возвращает массив индексов отсортированных элементов, не изменяя элементы массива, как показано в следующем примере :

// До сортировки
my_array[0].age = 29;
my_array[1].age = 3;
my_array[2].age = 35;
my_array[3].age = 4;
// После сортировки возвращается массив индексов.
// Оригинальный массив не изменяется.
// Вы можете использовать возвращенный массив для вывода информации
// о сортировке, без изменения оригинального массива.
var indexArray:Array = my_array.sortOn("age", Array.RETURNINDEXEDARRAY);
my_array[0].age = 29;
my_array[1].age = 3;
my_array[2].age = 35;
my_array[3].age = 4;

Пример

В следующем примере, создаётся новый массив, с последующей сортировкой элементов по полям name и city: Первая сортировка использует name, как первую сортируемую величину, а city как вторую. Вторая сортировка использует city, как первую сортируемую величину, а name как вторую.

var rec_array:Array = new Array();
rec_array.push( { name: "john", city: "omaha", zip: 68144 } );
rec_array.push( { name: "john", city: "kansas city", zip: 72345 } );
rec_array.push( { name: "bob", city: "omaha", zip: 94010 } );
for(i=0; i<rec_array.length; i++) {
 trace(rec_array[i].name + ", " + rec_array[i].city);
}
// результаты:
// john, omaha
// john, kansas city
// bob, omaha

rec_array.sortOn( [ "name", "city" ]);
for(i=0; i<rec_array.length; i++) {
 trace(rec_array[i].name + ", " + rec_array[i].city);
}
// результаты:
// bob, omaha
// john, kansas city
// john, omaha

rec_array.sortOn( ["city", "name" ]);
for(i=0; i<rec_array.length; i++) {
 trace(rec_array[i].name + ", " + rec_array[i].city);
}
// результаты:
// john, kansas city
// bob, omaha
// john, omaha

См.также

| (побитовое ИЛИ), Array.sort()